package com.anolesoft.twelvePlan.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;

/**
 * @author zyq
 * @date 2022/6/16
 */
@RestController
@RequestMapping(value="/model")
@Slf4j
public class ModelController {

    /**
     * @param type
     * @param response
     */
    //@PostMapping("/download")
    //public void download(String type, HttpServletResponse response) {
    //    log.debug("type："+ type);
    //    try {
    //        int types = Integer.parseInt(type);
    //        StringBuffer path = new StringBuffer();
    //        path.append("e:/new_system/sacmes/excel");
    //        switch (types){
    //            case 1:
    //                path.append("/外协目录模板.xlsx");
    //                break;
    //            case 2:
    //                path.append("/历史加工信息模板.xlsx");
    //                break;
    //            case 3:
    //                path.append("/等同项目录模板.xlsx");
    //                break;
    //            case 4:
    //                path.append("/工艺计划模板.xlsx");
    //                break;
    //        }
    //        // path是指想要下载的文件的路径
    //        File file = new File(path.toString());
    //        log.info(file.getPath());
    //        // 获取文件名
    //        String filename = file.getName();
    //        // 获取文件后缀名
    //        //String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
    //        //log.info("文件后缀名：" + ext);
    //
    //        // 将文件写入输入流
    //        FileInputStream fileInputStream = new FileInputStream(file);
    //        InputStream fis = new BufferedInputStream(fileInputStream);
    //        byte[] buffer = new byte[fis.available()];
    //        fis.read(buffer);
    //        fis.close();
    //
    //        // 清空response
    //        response.reset();
    //        // 设置response的Header
    //        response.setCharacterEncoding("UTF-8");
    //        //Content-Disposition的作用：告知浏览器以何种方式显示响应返回的文件，用浏览器打开还是以附件的形式下载到本地保存
    //        //attachment表示以附件方式下载 inline表示在线打开 "Content-Disposition: inline; filename=文件名.mp3"
    //        // filename表示文件的默认名称，因为网络传输只支持URL编码的相关支付，因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
    //        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
    //        response.setContentType("multipart/form-data;charset=UTF-8");
    //        //响应输出流
    //        OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
    //        //写操作
    //        outputStream.write(buffer);
    //        //刷新
    //        outputStream.flush();
    //        //关流
    //        outputStream.close();
    //    } catch (Exception e) {
    //        e.printStackTrace();
    //    }
    //}

    /**
     * 文件下载
     * @param type 一个方法实现不同文件导出时的判断标记
     * @param request
     * @param response
     */
    @PostMapping(value = "/download",produces = MediaType.APPLICATION_JSON_VALUE)
    public void downLoadExcelModel(String type, HttpServletRequest request, HttpServletResponse response){
        try {
            log.debug("type："+ type);
            int types = Integer.parseInt(type);
            StringBuffer path = new StringBuffer();
            path.append("e:/new_system/sacmes/excel");
            switch (types){
                case 1:
                    path.append("/外协目录模板.xlsx");
                    break;
                case 2:
                    path.append("/历史加工信息模板.xlsx");
                    break;
                case 3:
                    path.append("/等同项目录模板.xlsx");
                    break;
                case 4:
                    path.append("/工艺计划模板.xlsx");
                    break;
                case 5:
                    path.append("/进度核对修改模板.xlsx");
                    break;
                case 6:
                    path.append("/节点周期模板.xlsx");
                    break;
                case 7:
                    path.append("/工段移交图号对比模板.xlsx");
                    break;
                case 8:
                    path.append("/配套计划模板.xlsx");
                    break;
            }
            //String filePath = getClass().getResource("/static/model/controlMaintain.xlsx").getPath();
            log.debug("filePath："+ path.toString());
            // 读到流中
            InputStream inStream = new FileInputStream(path.toString());//文件的存放路径
            // 设置输出的格式
            response.reset();
            response.setContentType("application/octet-stream");
            response.addHeader("Content-Disposition",
                    "attachment;filename=" + URLEncoder.encode("model" + type + ".xlsx", "UTF-8"));
            // 循环取出流中的数据
            byte[] b = new byte[200];
            int len;

            while ((len = inStream.read(b)) > 0){
                response.getOutputStream().write(b, 0, len);
            }
            inStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
